//////////////////////////////////////////////////////////////////////
// (c) 2003-2010 sonofdelphi
// MIT License
//////////////////////////////////////////////////////////////////////

#include "StringFunctions.h"

bool isNotAlphabet(char c)
{
	if(!isalpha(c))
		return true;
	return false;
}

int CStringFunctions::numberOfOccurrencesOfCharacter(char c, char* str)
{
	int nLength=strlen(str);
	int nCount=0;
	
	for(int i=0;i<nLength;i++)
		if(c==str[i])
			++nCount;
	
	return nCount;
}


char* CStringFunctions::deleteAt(int pos,char*str)
{
	int len=strlen(str);
	for(int i=pos;i<len;i++)
		str[i]=str[i+1];
	return str;
}


char* CStringFunctions::filterOff(char* str, bool(*filterFunction)(char))
{
	int n=strlen(str);
	for(int i=0;i<n;){
		if(!str[i])
			break;
		if(filterFunction(str[i]))
			deleteAt(i,str);
		else
			++i;
	}
	return str;	
}

char* CStringFunctions::removeLetter(char c, char *str)
{
	int n=strlen(str);
	for(int i=0;i<n;)
		if(c==str[i])
			deleteAt(i,str);
		else
			++i;
	return str;
}


char* CStringFunctions::makeLetterSet(char* str)
{
	int i,j;
	int n=strlen(str);
	char temp;

	//Sort
	for(i=0;i<n-1;++i)
		for(j=i+1;j<n;++j)
			if(str[i]>str[j]){
				temp=str[i];
				str[i]=str[j];
				str[j]=temp;
			}

	//Eliminate duplicates
	i=0;
	while(str[i]){
		if(str[i]==str[i+1])
			deleteAt(i,str);
		i++;
	}

	return str;
}

